﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PSE.ProcessManager.Server.Process.Security
{
    /// <summary>
    /// Classe que representa o contexto de autorização
    /// </summary>
    /// <typeparam name="TData">Tipo do objeto que armazena os dados do contexto de autorização</typeparam>
    public static class AuthorizationContext<T>
        where T : class
    {
        private static object _syncRoot = new object();
        private static T _authorizationContext;
        
        /// <summary>
        /// Retorna o contexto de autorização corrente.
        /// </summary>
        public static T Current
        {
            get
            {
                return _authorizationContext;
            }
            set
            {
                lock (_syncRoot)
                {
                    _authorizationContext = value;
                }
            }
        }
    }
}
